Data synchronization enables data located in different databases to be kept up-to-date, so that each data repository contains the same information. Data can include text, images, video, and other multimedia data. Data in a handheld device or laptop often requires synchronization with a desktop machine or a server. When the same data resides in multiple locations, it is often required that the data be routinely synchronized.
Synchronization applications enable devices to perform various forms of data synchronization. Synchronization applications can be used to distribute data from one device to one or more other devices, or to upload data to a device from one or more devices. As part of the data synchronization process, synchronization applications provide communications between devices which are synchronizing data. Such communications can include initialization, control commands, acknowledgments, data transfers, and other synchronization communications necessary to perform data synchronization. Various synchronization protocols exist to enable synchronization communications between data synchronizing devices. Examples of such synchronization protocols include SyncML (Synchronization Markup Language), ICE (Information and Content Exchange), and WebDAV (Web Distributed Authoring and Versioning).
SyncML synchronizes networked data with many different devices, including handheld computers such as personal digital assistants (PDAs), mobile phones, automotive computers, and desktop PCs. SyncML is a data synchronization protocol that defines workflow communication during a data synchronization session when a computing device is connected to a network or directly to another computing device. SyncML supports naming and identification of records, common protocol commands to synchronize local and network data, and supports identification and resolution of synchronization conflicts. SyncML defines the XML document type used to represent a SyncML message, such as common protocol commands and message containers. The SyncML messages are preferably transmitted using HTTP, Wireless Session Protocol (WSP), or Object Exchange protocol (OBEX).
ICE is a data sharing specification that allows one web site to obtain data from another web site. Using meta tags, ICE provides a standard way of defining a company's data. ICE is based on XML and OPS.
WebDAV provides enhancements to the HTTP protocol that turns the Web into a document database. This enables collaborative creation, editing and searching from remote locations. WebDAV enables documents to be written via HTTP (HTTP normally only supports reading). WebDAV also allows documents to be assigned properties, or attributes, that can be searched using the DAV Searching and Locating (DASL) protocol.
An API (Application Programming Interface) is a language and message format used by an application program, such as a synchronization application, to communicate with the operating system or some other control program such as a database management system (DBMS) or communications protocol, such as a synchronization protocol. APIs are implemented by writing function calls in the application program, which provide the linkage to the required subroutine for execution. Thus, an API implies that some program module is available in the computing device to perform the operation or that it must be linked into the existing program to perform the tasks.
Understanding an API is a major part of what an application programmer does. Except for writing the business logic that performs the actual data processing, most of the remaining programming includes writing the code to communicate with the operating system and other software. The APIs for operating systems can be daunting, especially the calls to display and print. For example, there are more than a thousand API calls in an operating system such as Windows, Mac or UNIX.
To perform data synchronization using a synchronization application, the synchronization application includes a separate API for interfacing with each necessary synchronization protocol. To enable a synchronization application to function in as many networking environments as possible, the synchronization application includes APIs to interface with a multitude of synchronization protocols. This greatly increases the complexity, time and cost for developing a synchronization application.